/**
 * 允许删除一些字符而不改变字符相对位置形成子串
 * 两个指针分别扫描长串和短串，目标是为短串中的字符在长串中找到匹配
 * 如果指向的字符相同，两个指针都移动考察下一个字符
 * 如果不相同，短串的指针不动，长串的指针移动考察下一个字符
 * 如果短串走完了，说明短串的字符在长串中都找到匹配
 * 如果短串没有走完，长串走完了，说明考察了整个长串也没能找齐短串的所有字符

 * @param {*} s
 * @param {*} t
 */
// const isSubsequence = (subStr, str) => {
//   if (subStr.length == 0) return true
//   let index = 0
//   let subIndex = 0
//   while (index < str.length) {
//     if (subStr[subIndex] == str[index]) {
//       subIndex++
//       // 子串遍历结束
//       if (subIndex > subStr.length - 1) {
//         return true
//       }
//     }
//     index++
//   }
//   return false
// }
var isSubsequence = function (s, t) {
  let n = s.length,
    m = t.length
  let i = 0,
    j = 0
  while (i < n && j < m) {
    if (s[i] === t[j]) {
      i++
    }
    j++
  }
  //如果 i移动到 s 的末尾，就说明 s 是 t 的子序列
  return i == n
}
